/*
 * Crear_cola.c
 *
 *  Created on: 24/09/2011
 *      Author: utn_so
 */

#include <stdio.h>
#include <stdlib.h>


//Defino la estructura de los nodos con todos sus respectivos campos.

typedef struct nodo {
	char tipoPet; /*Si la peticion es de Lectura o escritura*/
	long int DirecDisco; // Direccion del disco para la transferencia
	long int DirecMemoria; //Direccion de memoria para la Trasferencia
	int CantSectores; //Cantidad de sectores a transferir
	struct nodo *PtrSgte; //Puntero al siguiente nodo de la cola
} TipoNodo;

typedef TipoNodo *PtrNodo;  //Defino un tipo de puntero que apunta a la estructura nodo (esto me costo entederlo)

void Agregar_nodo (PtrNodo ColaFte, PtrNodo ColaFin, PtrNodo PtrNodo) {

	if (ColaFte == NULL) {		//Si la lista esta Vacia Asignar los punteros de la cola al nuevo puntero
	ColaFte = PtrNodo;
	ColaFin = PtrNodo;
	}
	else {
		ColaFin->PtrSgte = PtrNodo;
	}
}


PtrNodo Obtener_primer_nodo ( PtrNodo ColaFte ) { //Se obtiene el primer nodo de la cola y se borra el enlace del nodo a la cola
	PtrNodo PtrAux;
	if (ColaFte==NULL)
	{			//Se controla que la cola no este vacia
	printf("la Cola esta vacia!\n");
	}
	else {
			PtrAux = ColaFte;
			ColaFte = ColaFte->PtrSgte;
		}
	return (PtrAux);
		}


PtrNodo Crear_nodo () { //Crea un nodo con todos los campos en 0
	PtrNodo PtrNuevo;
	PtrNuevo = malloc (sizeof(TipoNodo));
	PtrNuevo->PtrSgte = NULL;
	PtrNuevo->tipoPet = 0;
	PtrNuevo->DirecMemoria = 0;
	PtrNuevo->DirecDisco = 0;
	PtrNuevo->CantSectores = 0;
	return (PtrNuevo);
	}


void mostrar_menu (void)
{
printf ("Y man, que queres hacer?\n"
		"1: Crear un nodo\n"
		"2: Obtener nodo\n"
		"3: Para romper todo ( o salir tranquilo)\n");
}

//int main () {
//
//	char tipoPet;
//	int DirecDisco;
////	int DirecMemoria;
////	int CantSectores;
//	int eleccion;
//	PtrNodo NodoNuevo;
//	PtrNodo ColaFrte;
//	PtrNodo ColaFin;
//
//	mostrar_menu();
//	scanf ( "%d", &eleccion);
//
//	while ( eleccion != 3 ) {
//		switch ( eleccion )
//		{
//			case 1:
//			    NodoNuevo = Crear_nodo ();
//				printf ("Que tipo de peticion es: \n");
//				scanf ("%c", &tipoPet );
//				NodoNuevo->tipoPet = tipoPet;
//				printf ("Direccion en disco?\n");
//				scanf ("%d", &DirecDisco );
//				NodoNuevo->DirecDisco = DirecDisco ;
//				//Asi con todos ( no los escribos todos para que no sea tan tediosa la lectura)
//
//				/* Aca se agrega el nodo a la cola (que se supone que se creo para eso)
// * sino se podria preguntar por otras opciones para hacer */
//				if ( ColaFrte == NULL)
//				{
//					ColaFrte = NodoNuevo;
//					ColaFin = NodoNuevo;
//				} else
//					{
//					ColaFin->PtrSgte = NodoNuevo;
//					}
//			break;
//
//			case 2:
//				NodoNuevo = Obtener_primer_nodo (ColaFrte);
//
//				break;
//
//		}
//		mostrar_menu();
//		scanf ( "%d", &eleccion);
//	}
//
//return 0;
//	}
